package com.example.demo001.service;

import com.example.demo001.common.result.Result;
import com.example.demo001.pojo.dto.UserDto;
import com.example.demo001.pojo.dto.UserLoginDto;
import com.example.demo001.pojo.vo.UserVo;

import javax.servlet.http.HttpServletRequest;
import java.util.List;
import java.util.Map;

public interface UserService {
    /**
     * 注册
     * @param userDto 用户信息
     */
    void register(UserDto userDto);

    /**
     * 登录
     * @param userLoginDto 用户登入信息
     * @param request 请求
     * @return userVo
     */
    UserVo login(UserLoginDto userLoginDto, HttpServletRequest request);

    /**
     * 登出
     * @param username 用户名
     */
    void logout(String username);

    /**
     * 修改密码
     * @param oldPassword 原密码
     * @param newPassword 新密码
     */
    void updatePassword(String oldPassword, String newPassword);

    /**
     * 修改绑定邮箱
     * @param email 邮箱
     * @param code 验证码
     */
    void updateEmail(String email,String code);

    /**
     * 找回密码
     * @param userDto 用户信息
     */
    void resetPassword(UserDto userDto);

    /**
     * 登录统计
     * @return map集合
     * key: days value: counts
     */
    Map<String, List<String>> loginStatist();

    /**
     * 发送验证码
     * @param email 邮箱
     */
    Result<Object> sendCode(String email);


}
